package class03

import "sort"


type Job struct {
	Money int
	Hard  int
}

type Jobs []Job

func (js Jobs) Len() int {
	return len(js)
}

func (js Jobs) Less(i, j int) bool {
	if js[i].Hard == js[j].Hard {
		return js[i].Money < js[j].Money
	}
	return js[i].Hard < js[j].Hard
}

func (js Jobs) Swap(i, j int) {
	js[i], js[j] = js[j], js[i]
}

/*
	每种工作有难度和报酬，规定如下
	class Job {
		public int money // 该工作的报酬
		public int hard  // 该工作的难度
	}
	给定一个Job类型的数组job arr，表示所有岗位，每个岗位都可以提任意份工作
	选工作的标准是在难度不超过自身能力值的情况下，选择报酬最高的岗位
	给定一个int类型的arr数组，表示所有人的能力
	返回int类型的数组，表示每个人按照标准选工作后所能获得的最高报酬
	思路：
		1. 将job排序，按照hard顺序排序，hard相同按照money排序
		2. 将同hard的money的最高值保留，并且将hard高的且money比之前money低的工作删除
		4. 根据能力数组去获取收益就可以了，如果遍历需要查找对应的值，则可以二分，也可以使用有序表
*/

func GetMoneys(jobs []Job, ability []int)[]int{
	sort.Sort(Jobs(jobs))
	return []int{}
}
